import cv2
import pytesseract
import os
from PIL import Image

# 设置tesseract的路径（根据你的安装位置进行调整）
pytesseract.pytesseract.tesseract_cmd = '/opt/homebrew/bin/tesseract'  # macOS的安装路径

# 打开视频文件
cap = cv2.VideoCapture('/Users/zengshan/Desktop/lv_0_20241113181012.mp4')  # 替换成你的视频文件路径

# 配置保存图片的文件夹
output_folder = '/Users/zengshan/Desktop/tmp2'  # 指定输出文件夹
os.makedirs(output_folder, exist_ok=True)  # 如果文件夹不存在，创建它

frame_count = 0

while True:
    ret, frame = cap.read()  # 读取一帧
    if not ret:
        break  # 如果没有读取到帧，说明视频已经结束

    # 使用Tesseract识别当前帧中的中文汉字
    pil_image = Image.fromarray(cv2.cvtColor(frame, cv2.COLOR_BGR2RGB))
    text = pytesseract.image_to_string(pil_image, lang='chi_sim')  # 使用简体中文语言包

    if text.strip():  # 如果识别到文本
        print(f"Frame {frame_count} - Recognized Text: {text}")

        # 使用OpenCV绘制文本的矩形框来遮挡文本区域
        boxes = pytesseract.image_to_boxes(pil_image, lang='chi_sim')
        for b in boxes.splitlines():
            b = b.split()
            x, y, w, h = int(b[1]), int(b[2]), int(b[3]), int(b[4])
            # 画一个白色矩形来覆盖文字区域
            frame = cv2.rectangle(frame, (x, h), (w, y), (255, 255, 255), -1)

    # 保存去掉汉字后的图片到指定文件夹
    output_filename = os.path.join(output_folder, f'frame_{frame_count}_no_text.jpg')
    cv2.imwrite(output_filename, frame)

    frame_count += 1

# 释放视频资源
cap.release()